1. Field of the Invention
This invention relates to computer systems and, more particularly, to reducing latency of accessing an index for a number of data blocks stored on a server.
2. Description of the Related Art
Computer systems frequently include data storage subsystems for storing data. In particular, computer systems that include multiple clients interconnected by a network increasingly share one or more data storage subsystems via a network. The shared storage may include or be further coupled to storage consisting of one or more disk storage devices, tape drives, or other storage media. Shared storage of modern computer systems typically holds a large amount of data. Efficient storage of this large amount of data may be desired in order for a modern business to effectively execute various processes.
One method of efficiently storing data includes data deduplication, which attempts to reduce the storage of redundant data. Deduplication mechanisms may both remove duplicate data already stored in shared storage and disallow duplicate data from being stored in shared storage. Accordingly, one copy of unique data may be stored, which reduces the shared storage capacity. Indexing of all data in the computing system may be retained should the redundant data ever be requested. For example, data may be partitioned into blocks of data and a hash computation may be performed for each block. One of several hashing techniques that are well known may be used. A corresponding hash value, or fingerprint, of data associated with a read/write access to the shared storage may be compared to fingerprints of data already stored in the shared storage. The comparisons of fingerprints may utilize a storage of fingerprints, such as in a random access memory (RAM) or otherwise. The storage of fingerprints may be referred to as a fingerprint index, or index.
As data storage grows, it may be difficult to maintain an index capable of storing fingerprints of all data blocks known to be stored in the shared storage. Since a computer system's storage capacity is typically very large, an index may also be very large. The resulting index may not fit in supplied RAM. Additionally, if a portion of the associated fingerprints is stored in storage such as a disk storage, performance may suffer. The disk access speeds may not be fast enough to keep up with the rate of index requests.
In view of the above, systems and methods for efficiently reducing latency of accessing an index for a data segment stored on a server are desired.